/* Margin.h
 * 
 *  Author          : Alexander J. Yee
 *  Date Created    : 09/01/2014
 *  Last Modified   : 09/01/2014
 * 
 */

#pragma once
#ifndef ymp_Console_Margin_H
#define ymp_Console_Margin_H
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//  Dependencies
#include "BasicIO.h"
namespace ymp{
namespace Console{
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//  String Margins
YM_NO_INLINE    upL_t print_marginl         (upL_t margin, std::string x, char color = ' ');
YM_NO_INLINE    upL_t println_marginl       (upL_t margin, std::string x, char color = ' ');
YM_NO_INLINE    upL_t print_marginr         (upL_t margin, const std::string& x, char color = ' ');
YM_NO_INLINE    upL_t println_marginr       (upL_t margin, const std::string& x, char color = ' ');
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//  Integer Margins
YM_NO_INLINE    upL_t print_marginl         (upL_t margin, siL_t x, char color = ' ');
YM_NO_INLINE    upL_t println_marginl       (upL_t margin, siL_t x, char color = ' ');
YM_NO_INLINE    upL_t print_marginr         (upL_t margin, siL_t x, char color = ' ');
YM_NO_INLINE    upL_t println_marginr       (upL_t margin, siL_t x, char color = ' ');
YM_NO_INLINE    upL_t print_marginl_commas  (upL_t margin, siL_t x, char color = ' ');
YM_NO_INLINE    upL_t println_marginl_commas(upL_t margin, siL_t x, char color = ' ');
YM_NO_INLINE    upL_t print_marginr_commas  (upL_t margin, siL_t x, char color = ' ');
YM_NO_INLINE    upL_t println_marginr_commas(upL_t margin, siL_t x, char color = ' ');
YM_NO_INLINE    upL_t print_marginl_quotes  (upL_t margin, siL_t x, char color = ' ');
YM_NO_INLINE    upL_t print_marginr_quotes  (upL_t margin, siL_t x, char color = ' ');
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//  Float Margins
YM_NO_INLINE    upL_t print_marginl_float   (upL_t margin, double x, int precision = DEFAULT_PRECISION, char color = ' ');
YM_NO_INLINE    upL_t println_marginl_float (upL_t margin, double x, int precision = DEFAULT_PRECISION, char color = ' ');
YM_NO_INLINE    upL_t print_marginr_fixed   (upL_t margin, double x, int precision = DEFAULT_PRECISION, char color = ' ');
YM_NO_INLINE    upL_t println_marginr_fixed (upL_t margin, double x, int precision = DEFAULT_PRECISION, char color = ' ');
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
}
}
#endif
